const qs=require('querystring')
module.exports=()=>{
    return async (ctx,next)=>{
        //如果请求方法是post就执行下面的方法
        if(ctx.method==='POST'||ctx.method==='PUT'){
            //定义空字符串作为载体拼接字符串
            let body = await new Promise((res,rej)=>{
                let str='';
                //post请求是二进制流的方式发送的
                ctx.req.on('data',chunk=>{
                    //将代码拼接到载体上
                    str+=chunk;
                })
                //post请求结束的事件
                ctx.req.on('end',()=>{
                   if(ctx.headers['content-type']==='application/x-www-form-urlencoded'){
                       res(qs.parse(str))
                   }else{
                       res(JSON.parse(str))
                   }
                })
            })
            //将body加到request.body的属性上
            ctx.request.body=body;
            await next()
        }else{
            //否则就是get方法请求
            await next()
        }
    }
}